// pages/qrCode/qrCode.js
//采用promise回调方法
const promisify = require('../../pr/promisify.js')
Page({

  /**
   * 页面的初始数据
   */
  data: {
   access_token:null,
   qrcodeImg:null,
   bookCodeInfo:null,
   bookname:null,
   test:null,
   bookid_2:null,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var that = this;
    var bookid = [];
    var bookname = [];

    // 1.获取token
    wx.request({
      url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential',
      data: {
        appid: getApp().globalData.appID,
        secret: getApp().globalData.appSecret
      },
      success(res) {
        that.setData({
          access_token:res.data.access_token
        })
        console.log(' 1.已获取token:',res.data.access_token)

        //2.获取未生成条码的图书信息
        wx.cloud.init({ env: getApp().globalData.myenv })                      //云开发初始化
        const db = wx.cloud.database({ env: getApp().globalData.myenv })       //数据库初始化
        db.collection('Books').where({
          qrCode: false, 
        })
          .get({
            success: function (res) {                          
              var bookCodeInfo = res.data; 
              console.log('2.已获取未生成条码的图书信息')
              console.log('需生成的码数：',bookCodeInfo.length)
              bookid = bookCodeInfo[0]._id;
              bookname = bookCodeInfo[0].title;
              that.setData({bookname:bookname})//绘图用的图书名称
              that.setData({ bookid_2: bookid })//绘图用的图书名称
            
              //3.生成小程序码
              wx.request({
                url: 'https://api.weixin.qq.com/wxa/getwxacode?access_token=' + that.data.access_token,
                method: "POST",
                data: {
                  'path': "../info/info?bookid=" + bookid,
                  'width': '430'
                },
                responseType: 'arraybuffer', // arraybuffer是以数组的语法处理二进制数据，称为二进制数组。

                success: function (res) {

                  console.log('3.已生成小程序码',res)
                  let data = wx.arrayBufferToBase64(res.data)
                  let temp = 'data:image/png;base64,' + data
                  that.setData({ qrcodeImg:temp })  //绘图用的imageResource

                  //4.绘制小程序码
                  console.log('4.绘制打印的小程序码')
                  var codebookname = that.data.bookname
                  var codesrc = that.data.qrcodeImg
                  const wxGetImageInfo = promisify(wx.getImageInfo)

                  //新建画布
                  const ctx = wx.createCanvasContext('shareCanvas')
                  //加文字
                  ctx.setTextAlign('center')                // 文字居中
                  ctx.setFillStyle('#000000')               // 文字颜色：黑色
                  ctx.setFontSize(15)                       // 文字字号
                  ctx.fillText(codebookname, 220 / 2, (220 + 240) / 2) 
                  //根据arraybuffer画小程序码
                  const qrImgSize = 180
                  ctx.drawImage(codesrc, 20, 20, qrImgSize, qrImgSize)

                  ctx.stroke()
                  ctx.draw()
                  console.log('图片绘制成功')


                },
                fail: function (res) {
                  console.log('上传失败')
                }
              })


            },
            fail:function(){
              console.log('数据库查询失败')
            }

          })


   
      }
    })

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },


  //保存为图片，清除qrCode标志位
  saveImg: function () {
      //保存图片到相册
      console.log('准备保存到相册')
      const wxCanvasToTempFilePath = promisify(wx.canvasToTempFilePath)
      const wxSaveImageToPhotosAlbum = promisify(wx.saveImageToPhotosAlbum)
      //把当前画布指定区域的内容导出生成指定大小的图片
      //wx.canvasToTempFilePath使用注意：电脑调试保存的图片为空，真机调试正常
      wxCanvasToTempFilePath({
        x: 0,
        y: 0,
        width: 220,
        height: 240,
        destWidth: 235,
        destHeight: 250,
        fileType: 'png',
        canvasId: 'shareCanvas'
      }, this).then(res => {
        console.log('res.tempFilePath:', res.tempFilePath)
        return wxSaveImageToPhotosAlbum({
          filePath: res.tempFilePath
        })
      }).then(res => {
        wx.showToast({
          title: '已保存到相册'
        })

        //清除标志位
        wx.cloud.init({ env: getApp().globalData.myenv })                      //云开发初始化
        const db = wx.cloud.database({ env: getApp().globalData.myenv })       //数据库初始化
        db.collection('Books').doc(this.data.bookid_2).update({
          data: {
            qrCode: true
          },
          success(res) {
            console.log('qrCode状态已经更新')
          }
        })

        //页面跳转
        wx.redirectTo({                    
          url: '../admininfo/admininfo',
        })



      })


  },





})